package com.aqie.arithmetic.myinterface;

public interface STInterface<Key extends Comparable<Key>, Value> {
    void put(Key key, Value value);
    Value get(Key key);
    void delete(Key key);
    boolean contains(Key key);

    boolean isEmpty();
    int size();
    Key min();
    Key max();

    // 小于等于key最大值
    Key floor(Key key);

    // 大于等于key的最小值
    Key ceiling(Key key);

    // 小于key的键的数量
    int rank(Key key);

    // 排名为k的键
    Key select(int k);

    // 删除最小的键
    void deleteMin();

    void deleteMax();

    // [l, h] 间键的数量
    int size(Key l, Key h);

    // [l, h] 间所有键，已排序
    Iterable<Key> keys(Key l, Key h);

    // 所有键的集合 已排序
    Iterable<Key> keys();
}
